www.gusucode.com > 动网论坛Dvbbs v8.3 > 动网论坛Dvbbs v8.3\code\源程序\Getboardlist.asp

    <!--#include file="conn.asp"-->
<!--#include file="inc/const.asp"-->
<!--#include file="inc/dv_clsother.asp"-->
<%
'Response.Write GetBbsList(Application(Dvbbs.CacheName&"_boardlist"))
Call LoadJsonBoardListCache

Sub LoadJsonBoardListCache()
	Dvbbs.Name="jsonboardlist"&Dvbbs.GroupSetting(37)
	If Dvbbs.ObjIsEmpty() Then Dvbbs.value=GetBbsList(Application(Dvbbs.CacheName&"_boardlist"))
	Response.Write Dvbbs.value
End Sub
%>
<script language="JScript" type="text/javascript" runat="server" >
function GetBbsList(dom)
	{
			var jsonstr=""
			var json=new Json();
			var nodelist=dom.documentElement.getElementsByTagName("board")
			var e = new Enumerator(nodelist);
			for (;!e.atEnd();e.moveNext())
			{
				var x = e.item();
				if(!(x.attributes.getNamedItem("hidden").text=="1" && Dvbbs.GroupSetting(37)=="0"))
				{
					var e1=	new Enumerator(x.attributes);
					for (;!e1.atEnd();e1.moveNext())
					{
						var x1 = e1.item();
						if(x1.nodeName =="boardid"
||  x1.nodeName=="boardtype"
||  x1.nodeName=="parentid"
||  x1.nodeName=="depth"
||  x1.nodeName=="rootid"
||  x1.nodeName=="child"
||  x1.nodeName=="parentstr"
||  x1.nodeName=="checkout"
||  x1.nodeName=="hidden"
||  x1.nodeName=="nopost"
||  x1.nodeName=="checklock"
||  x1.nodeName=="mode"
||  x1.nodeName=="simplenesscount")json.AddItem(x1.nodeName, escape(x1.nodeValue));
					}
					json.ItemOk();
				}
			}
		Response.Expires = -9999;
		return json.toString()
//		Response.write(Dvbbs.value);
	}
</script>

<script language="JScript"  runat="server" >
	/*
	Jscript函数
	*/
	//StringBuilder 字符串缓冲对象
	var StringBuilder = function(){
	this._sArray = new Array();
	}
	//方法 append 向缓冲里压入一个字符串,参数str=要压入的字符内容
	StringBuilder.prototype.append = function(str){
		this._sArray.push(str);
	}
	//方法toString 把缓冲中的内容全部按压入的次序取出。
	StringBuilder.prototype.toString = function(){
		return this._sArray.join('');
	}

	
		//Json类 
		function Json()
		{
			this.success=true;
			this.error="";
			this.singleInfo=new String();
			this.arrData=new Array();
			this.arrDataItem=new Array();
			//Reset 方法,作用:重新初始化 以便继续处理下一个Json;
			this.Reset=function()
			{
				this.success=true;
				this.error="";
				this.singleInfo=new String();
				this.arrData=new Array();
				this.arrDataItem=new Array();
			}
			//AddItem 添加一个数据项
			//参数 name 数据项名称,
			//参数_value 数据项的值
			this.AddItem=function(name,_value)
			{
				this.arrDataItem.push(name);
				this.arrDataItem.push(_value);
			}
			//ItemOk 数据项目添加完毕,把数据压入arrData数组为下一行数据的添加做准备
			this.ItemOk=function()
			{
				this.arrData.push(this.arrDataItem);
				this.arrDataItem=new Array();
			}
			//toString 把Json的字符串内容从数组中取出来
			this.toString=function()
			{
				var sb=new StringBuilder();
				sb.append("{");
				sb.append("success:"+this.success.toString().toLowerCase()+",");
				sb.append("error:\""+this.error.replace("\"","\\\"")+"\",");
				sb.append("singleInfo:\""+this.singleInfo.replace("\"","\\\"")+"\",");
				sb.append("data:[");
				
				for(var i=0;i<this.arrData.length;i++)
				{
					var arr= this.arrData[i];
					sb.append("{");
					for(var j=0;j<arr.length;j+=2)
					{
						if(j==arr.length)break;
						sb.append(arr[j]);
						sb.append(":");
						sb.append("unescape(\"");
						sb.append(arr[j+1].toString().replace("\"","\\\""));
						sb.append("\")");
						if(j<arr.length-2)sb.append(",");
					}
					sb.append("}");
					if(i<this.arrData.length-1)sb.append(",");
				}
				sb.append("]");
				sb.append("}");
				return sb.toString();	
			}
		}
		/*
		Json 类应用例子
		 var json = new Json();
		 json.AddItem("Id","1");
		 json.AddItem("Type","测试项目1");
		 json.AddItem("contents","内容");
		 json.ItemOk();
		 json.AddItem("Id","2");
		 json.AddItem("Type","测试项目2");
		 json.AddItem("contents","内容");
		 Response.write(json.toString())
		 使用json.toString()返回的内容将会是
		 {success:true,error:"",singleInfo:"",data:[{Id:unescape("1"),Type:unescape("测试项目1"),contents:unescape("内容")}]}
		 
		 要更深入了解Json 请浏览
		 http://www.json.org/json-zh.html
		 http://www.google.cn/search?source=ig&hl=zh-CN&q=Json&lr=
		 
		*/
		//RsToJson
	 //记录集转换成Json对象。
	 //参数:Rs 类型:ADODB.Recordset
	 //返回值,自定对象Json
		function RsToJson(Rs)
			{
				var json= new Json()
				 while (!Rs.EOF)
			    {
			        for (var i = 0; i < Rs.Fields.Count; i++)
			        {
			            json.AddItem(Rs(i).name, escape(Rs(i).value));
			        }
			        json.ItemOk();
			        Rs.MoveNext();
			    }
				return json;
			}
		//转换日期时间,参数(datestr)可以是毫秒数(1178331182500)或者字符串(Sun Aug 5 14:21:59 UTC+0800 2007)
		function strToDate (datestr)
		{
			var newDate;
			if(typeof(datestr)=="string")
			{
				var val=Date.parse(datestr);
		  	newDate=new Date(val);
		  }
		  else{newDate=new Date(datestr)}
		  return newDate.toLocaleString();
		}
		//Response.write (strToDate("Sun Aug 5 14:21:59 UTC+0800 2007"))
		//Response.write(strToDate(1178331182500));
		//模版对象
		/*
		var Mytemplate={};
		Mytemplate.loadhtml=function(_value)
		{
			this.lhtml=_value.split("|||")
		}
			Mytemplate.loadlang=function(_value)
		{
			this.lStrings=_value.split("|||")
		}
			Mytemplate.loadpic=function(_value)
		{
			this.lpic=_value.split("|||")
		}
		var gethtml=function(index)
		{
			return Mytemplate.lhtml[index]
		}
		var getStings=function(index)
		{
			return String(Mytemplate.lStrings[index]);
		}
		var getpic=function(index)
		{
			return Mytemplate.lpic[index]
		}
		*/
</script>